From 4bdb243a885aa16f7e4b1aa4a93593f29a6d3c95 Mon Sep 17 00:00:00 2001 From: "mjw@wray-m-3.hpl.hp.com" Date: Fri, 25 Jun 2004 13:44:22 +0000 Subject: [PATCH] bitkeeper revision 1.1010.1.8 (40dc2c36FrgEuHCnSupH0LDIdB4C4Q) Change blkif, netif destroy to send disconnect first. --- tools/xenmgr/lib/server/blkif.py | 15 +++++++++++++-- tools/xenmgr/lib/server/messages.py | 9 ++++++--- tools/xenmgr/lib/server/netif.py | 14 +++++++++++++- 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/tools/xenmgr/lib/server/blkif.py b/tools/xenmgr/lib/server/blkif.py index f23a6d7fa4..fa46e3b642 100755 --- a/tools/xenmgr/lib/server/blkif.py +++ b/tools/xenmgr/lib/server/blkif.py @@ -215,8 +215,12 @@ class BlkifController(controller.Controller): def destroy(self): print 'BlkifController>destroy> dom=', self.dom - self.destroyDevices() - self.send_be_destroy() + def cb_destroy(val): + self.send_be_destroy() + d = self.factory.addDeferred() + d.addCallback(cb_destroy) + self.send_be_disconnect() + #self.destroyDevices() def destroyDevices(self): for dev in self.getDevices(): @@ -290,6 +294,13 @@ class BlkifController(controller.Controller): 'blkif_handle' : 0 }) self.factory.writeRequest(msg) + def send_be_disconnect(self): + print '>BlkifController>send_be_disconnect>', 'dom=', self.dom + msg = packMsg('blkif_be_disconnect_t', + { 'domid' : self.dom, + 'blkif_handle' : 0 }) + self.factory.writeRequest(msg) + def send_be_destroy(self): print '>BlkifController>send_be_destroy>', 'dom=', self.dom msg = packMsg('blkif_be_destroy_t', diff --git a/tools/xenmgr/lib/server/messages.py b/tools/xenmgr/lib/server/messages.py index 0313670279..f920bd679e 100644 --- a/tools/xenmgr/lib/server/messages.py +++ b/tools/xenmgr/lib/server/messages.py @@ -67,6 +67,9 @@ blkif_formats = { 'blkif_be_create_t': (CMSG_BLKIF_BE, CMSG_BLKIF_BE_CREATE), + 'blkif_be_disconnect_t': + (CMSG_BLKIF_BE, CMSG_BLKIF_BE_DISCONNECT), + 'blkif_be_destroy_t': (CMSG_BLKIF_BE, CMSG_BLKIF_BE_DESTROY), @@ -123,12 +126,12 @@ netif_formats = { 'netif_be_create_t': (CMSG_NETIF_BE, CMSG_NETIF_BE_CREATE), - 'netif_be_destroy_t': - (CMSG_NETIF_BE, CMSG_NETIF_BE_DESTROY), - 'netif_be_disconnect_t': (CMSG_NETIF_BE, CMSG_NETIF_BE_DISCONNECT), + 'netif_be_destroy_t': + (CMSG_NETIF_BE, CMSG_NETIF_BE_DESTROY), + 'netif_be_driver_status_changed_t': (CMSG_NETIF_BE, CMSG_NETIF_BE_DRIVER_STATUS_CHANGED), diff --git a/tools/xenmgr/lib/server/netif.py b/tools/xenmgr/lib/server/netif.py index f999aefcc5..cb7496cd02 100755 --- a/tools/xenmgr/lib/server/netif.py +++ b/tools/xenmgr/lib/server/netif.py @@ -137,10 +137,15 @@ class NetDev(controller.Dev): self.bridge = None def destroy(self): + def cb_destroy(val): + self.controller.send_be_destroy(self.vif) print 'NetDev>destroy>', 'vif=', self.vif PrettyPrint.prettyprint(self.sxpr()) self.bridge_rem() - self.controller.send_be_destroy(self.vif) + d = self.controller.factory.addDeferred() + d.addCallback(cb_destroy) + self.controller.send_be_disconnect(self.vif) + #self.controller.send_be_destroy(self.vif) class NetifController(controller.Controller): @@ -281,6 +286,13 @@ class NetifController(controller.Controller): 'mac' : dev.mac }) self.factory.writeRequest(msg) + def send_be_disconnect(self, vif): + dev = self.devices[vif] + msg = packMsg('netif_be_disconnect_t', + { 'domid' : self.dom, + 'netif_handle' : dev.vif }) + self.factory.writeRequest(msg) + def send_be_destroy(self, vif): print 'NetifController>send_be_destroy>', 'dom=', self.dom, 'vif=', vif PrettyPrint.prettyprint(self.sxpr()) -- 2.30.2